package com.crm.dao.mapper.customMapper.customerManagerCustomMapper;

import com.crm.model.vo.customerManager.CustomerFollowVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author renshaorong
 * @Date 2021/04/28 9:22 上午
 */
public interface CustomerStatisticsCustomMapper {

    /**
     * 获取时间列表(用于折线图)//上年1 本年2 本周3 本月4 上月5
     * @param dateUnit
     * @return
     */
    List<String> getTimeList(@Param("dateUnit")Integer dateUnit);

    /**
     * 根据客户表中客户状态获取折线图数据（包括意向客户、新单客户、续费客户）
     * @param companyId
     * @param dateUnit
     * @param type
     * @return
     */
    List<Integer> getCustomerByState(@Param("companyId") String companyId, @Param("dateUnit") Integer dateUnit, @Param("type") Integer type);

    /**
     * 成交客户
     * @param companyId
     * @param dateUnit
     * @return
     */
    List<Integer> getDealCustomer(@Param("companyId") String companyId,@Param("dateUnit") Integer dateUnit);

    /**
     * 客户商机分层
     * @param companyId
     * @return
     */
    List<Integer> getCustomerBusiness(@Param("companyId") String companyId);

    /**
     * 客户跟进意向值
     * @param companyId
     * @param type
     * @param dateUnit
     * @param order
     * @return
     */
    List<CustomerFollowVO> getCustomerFollow(@Param("companyId") String companyId,
                                             @Param("type") Integer type,
                                             @Param("dateUnit") Integer dateUnit,
                                             @Param("order") String order);

    /**
     * 获取地图数据，客户总数
     * @param type
     * @return
     */
    List<Map<String, Object>> getCustomerNumForMap(@Param("type") Integer type, @Param("companyId") String companyId);

    /**
     * 地图未成交客户
     * @param companyId
     * @return
     */
    List<Map<String, Object>> nonDealNumForMap(@Param("companyId") String companyId);

    /**
     * 有商机的客户数
     * @Author renshaorong
     * @Date 2021/6/3 
     * @param companyId
     * @return
     */
    Integer hasOpportunity(@Param("companyId") String companyId);

    /**
     * 客户总数
     * @Author renshaorong
     * @Date 2021/6/3
     * @param companyId
     * @return
     */
    Integer customerNum(@Param("companyId") String companyId);

    /**
     * 客户总数
     * @Author renshaorong
     * @Date 2021/6/3
     * @param companyId
     * @return
     */
    Long getUserNewBusiness(@Param("yearMonth") String dateStr, @Param("accountId") String accountId);
}
